package com.example.hoasbackend.service;

import com.example.hoasbackend.model.domain.IndentOperation;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.lang.Nullable;

import java.time.LocalDateTime;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author lhx
 * @since 2022-03-03
 */
public interface IndentOperationService extends IService<IndentOperation> {

    void createIndentOperation(Long indentId, Long type,@Nullable String data,
                                       Long userId, Long modifierId) ;

    long getLastOperationType(long indentId);

    String getCheckTimesString(Long indentId);

    LocalDateTime getCheckInTime(Long indentId);

    LocalDateTime getCheckOutTime(Long identId);


    LocalDateTime getGenerationTime(Long id);
    /**
     * 如果订单超时取消：
     *  1.redis：修改订单状态
     *  2. 在sql之中添加operation cancel
     *
     *  如果已经到了入住或者退房时间
     *  1. redis：修改订单状态
     *  2. 到了入住时间，则需要添加一个新的null的订单idkey
     *  3. 到了退房时间，不需要
     */
    void redisKeyExpirationSolution(Long indentBatchId, String thisState, String nextState);

    long getExpirationDuration(Long indentBatchId, String thisState);

}
